package com.itheima.activiti;

import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.RepositoryService;
import org.activiti.engine.repository.Deployment;

import java.io.InputStream;
import java.util.zip.ZipInputStream;

/**
 * 流程定义的部署
 *  activiti表有哪些？
 *      act_re_deployment 部署信息
 *      act_re_procdef    流程定义的一些信息
 *      act_ge_bytearray  流程定义的bpmn文件以及png文件
 * @param
 */
public class ActivitiDeployment {

    //流程定义部署 流程制作出来后要上传到服务器 zip文件更便于上传
//    public static void main(String[] args) {
//        //1.创建ProcessEngine对象
//        ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
//
//        //2.得到RepositoryService实例
//        RepositoryService repositoryService = processEngine.getRepositoryService();
//
//        //3.转化出zipInputStream流对象
//        InputStream is = ActivitiDeployment.class.getClassLoader().getResourceAsStream("diagrams/holiday.zip");
//
//        //4.将InputStream转化为zipInputStream
//        ZipInputStream zipInputStream = new ZipInputStream(is);
//
//        //5.进行部署
//        Deployment deployment = repositoryService.createDeployment()
//                .addZipInputStream(zipInputStream)
//                .name("请假申请流程")
//                .deploy();
//
//        //6.输出部署的一些信息
//        System.out.println(deployment.getName());
//        System.out.println(deployment.getId());
//    }

    //流程定义部署
    public static void main(String[] args) {
        //1.创建ProcessEngine对象
        ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();

        //2.得到RepositoryService实例
        RepositoryService repositoryService = processEngine.getRepositoryService();

        //3.进行部署
        Deployment deployment = repositoryService.createDeployment()
                .addClasspathResource("diagrams/holiday2.bpmn") //添加bpmn资源
                .addClasspathResource("diagrams/holiday2.png") //添加png资源
                .name("请假申请流程")
                .deploy();

        //4.输出部署的一些信息
        System.out.println(deployment.getName());
        System.out.println(deployment.getId());
    }
}
